package com.lipi.mall.cart.service;

import com.lipi.mall.cart.vo.Cart;
import com.lipi.mall.cart.vo.CartItem;

import java.util.List;
import java.util.concurrent.ExecutionException;

public interface CartService {

    /**
     * 添加指定商品至购物车
     * @param skuId skuID
     * @param num   商品数量,累计式
     * @return CartItem
     */
    CartItem addToCart(Long skuId, Integer num) throws ExecutionException, InterruptedException;

    /**
     * 获取购物车中的给定购物项
     * @param skuId
     * @return
     */
    CartItem getCartItem(Long skuId);

    Cart getCart() throws ExecutionException, InterruptedException;

    /**
     * 清空给定用户标识的购物车数据
     * @param cartkey
     */
    void clearCart(String cartkey);

    void checkItem(Long skuId, Integer check);

    /**
     * 修改购物车中指定购物项数量
     * @param skuId 需要修改的购物项id
     * @param num   将购物项修改为${num}
     */
    void changeItemCount(Long skuId, Integer num);

    void deleteItem(Long skuId);

    /**
     * 获取当前用户的所有checked状态购物项数据(update price form db)
     * @return
     */
    List<CartItem> getUserCartItems();
}
